/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package poli.reserva.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import poli.reserva.base.vuelo;


/**
 *
 * @author Pc
 */
public class JVueloMySQL {
    
    public List<vuelo> selectJVueloMySQL(){
        
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        conexion conect = new conexion();
         conn=  conect.conexionMySQL();
        ArrayList resultado = new ArrayList();
        
     vuelo vuelo = new vuelo();
        try {
        
            
         String query = "SELECT * FROM vuelo ;";   
        
        st = conn.createStatement();   
        
         rs = st.executeQuery(query);   
           
            while (rs.next())
      {
          
           vuelo.setCod_vuelo(rs.getString(1));
           vuelo.setCiudad_origen(rs.getString(2));
           vuelo.setCiudad_detino(rs.getString(3));
           vuelo.setHora_salida(rs.getTime(4));
           vuelo.setCapacidad_pasajeros(rs.getString(5));
           vuelo.setEstado_vuelo(rs.getString(6));
           vuelo.setFecha_salida(rs.getDate(7));
           
           resultado.add(vuelo);
                }
            
            st.close();
           }
           
       
    catch (SQLException ex) {
           System.err.println(ex.getMessage());
        }
        return resultado;
        
    }
    
    public List<vuelo> selectJVueloMySQLCod_vuelo(String cod_vuelo){
        
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        conexion conect = new conexion();
         conn=  conect.conexionMySQL();
        ArrayList resultado = new ArrayList();
        
        
        try {
        
            
         String query = "SELECT * FROM vuelo where codigo = "+"'"+cod_vuelo+"' ;";   
        
        st = conn.createStatement();   
        
         rs = st.executeQuery(query);   
           
            while (rs.next())
      {
          vuelo vuelo = new vuelo();
           vuelo.setCod_vuelo(rs.getString(1));
           vuelo.setCiudad_origen(rs.getString(2));
           vuelo.setCiudad_detino(rs.getString(3));
           vuelo.setHora_salida(rs.getTime(4));
           vuelo.setCapacidad_pasajeros(rs.getString(5));
           vuelo.setEstado_vuelo(rs.getString(6));
           vuelo.setFecha_salida(rs.getDate(7));
           
          resultado.add(vuelo);
                }
            
            st.close();
           }
           
       
    catch (SQLException ex) {
           System.err.println(ex.getMessage());
        }
        return resultado;
        
    }
    
    
        public Boolean insertJVueloMySQL(vuelo JVuelo){
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        conexion conect = new conexion();
         conn=  conect.conexionMySQL();
         
         boolean result = false;
          try {
        
            
         String query = "INSERT INTO vuelo (codigo, ciudad_origen, ciudad_destino, hora_salida, capacidad_pasajeros ,estado_vuelo)"+
                 " VALUES ( '"+JVuelo.getCod_vuelo()+"' , '"+JVuelo.getCiudad_origen()+"' , '"+JVuelo.getCiudad_detino()+"' , '"+JVuelo.getHora_salida()+"' , '"+JVuelo.getCapacidad_pasajeros()+"', '"+JVuelo.getEstado_vuelo()+"' , '"+JVuelo.getFecha_salida()+"' );";   
        
        st = conn.createStatement();
        
        result =  st.execute(query);
        
            conn.close();     
            st.close();
           }
           
      
    catch (SQLException ex) {
           System.err.println(ex.getMessage());
        }
        
         if (result!= true){
             
             return result;
         }
         
         else
             
        return true;
        
    }
        
        public Boolean updateJVueloMySQL(String codigo , String capacidad_pasajeros){
        
         Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        conexion conect = new conexion();
         conn=  conect.conexionMySQL();
         
         boolean result = false;
          try {
        
            
      
              String query ="UPDATE vuelo SET capacidad_pasajeros =  ? WHERE codigo = ? ";
        
        PreparedStatement preparedStmt = conn.prepareStatement(query);
        
        
      preparedStmt.setString(1, codigo);
      preparedStmt.setString(2, capacidad_pasajeros);
        
         preparedStmt.executeUpdate();
        
            conn.close();     
            
           }
           
      
    catch (SQLException ex) {
           System.err.println(ex.getMessage());
        }
        
         if (result!= false){
             
             return result;
         }
         
         else
             
        return true;
               
        
    }
        
            public Boolean deleteJVueloMySQL(String codigo){
        
         Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        conexion conect = new conexion();
         conn=  conect.conexionMySQL();
         
         boolean result = false;
          try {
        
            
       
              String query ="DELETE FROM vuelo WHERE codigo = ?  ";
        
        PreparedStatement preparedStmt = conn.prepareStatement(query);
        
        
      preparedStmt.setString(1, codigo);
      
        
         preparedStmt.executeUpdate();
        
            conn.close();     
            
           }
           
      
    catch (SQLException ex) {
           System.err.println(ex.getMessage());
        }
        
         if (result!= false){
             
             return result;
         }
         
         else
             
        return true;
        
    }
            
            
            public List<vuelo> selectConsultaVuelo (String ciudad_origen , String ciudad_destino , Date Fec_salida){
                
               Connection conn = null;
               Statement st = null;
               ResultSet rs = null;
               conexion conect = new conexion();
               conn=  conect.conexionMySQL();
               ArrayList<vuelo> resultado = new ArrayList<vuelo>();
               SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        
       String fecha =  sdf.format(Fec_salida);
        
               
        try {
        
            
         String query = "SELECT * FROM vuelo where ciudad_origen = '"+ciudad_origen+"' "+
                        "and ciudad_destino = '"+ciudad_destino+"' and fecha_salida = '"+fecha+"' order by codigo;" ;   
        
        st = conn.createStatement(rs.TYPE_FORWARD_ONLY , rs.CONCUR_UPDATABLE);   
        
         rs = st.executeQuery("SELECT * FROM vuelo where ciudad_origen = '"+ciudad_origen+"' "+
                        "and ciudad_destino = '"+ciudad_destino+"' and fecha_salida >= '"+fecha+"' and estado_vuelo ='activo' order by codigo;");   
           
            while (rs.next())
      {
          
           vuelo vuelo = new vuelo();
           vuelo.setCod_vuelo(rs.getString(1));
           vuelo.setCiudad_origen(rs.getString(2));
           vuelo.setCiudad_detino(rs.getString(3));
           vuelo.setHora_salida(rs.getTime(4));
           vuelo.setCapacidad_pasajeros(rs.getString(5));
           vuelo.setEstado_vuelo(rs.getString(6));
           vuelo.setFecha_salida(rs.getDate(7));
           resultado.add(vuelo);
           
                }
            
          conn.close();
            
           
           }
        
               
       
    catch (SQLException ex) {
           System.err.println(ex.getMessage());
        }
        return resultado;
        
      
                
                
                
                
            }
    
}
